package com.example.demo.heima.netty.server;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPromise;

import java.nio.charset.StandardCharsets;

/**
 * ******************************************************
 *
 * @author liugh9
 * @version 1.0
 * @classname NettyServerOutBoundHandler1
 * @description
 * @date 2023/07/22 21:25
 * <p>
 * ******************************************************
 */
public class NettyServerOutBoundHandler1 extends ChannelOutboundHandlerAdapter {

    @Override
    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
        // 在super之前对msg修改下个outBoundHandler接收到的数据会为修改后的
        super.write(ctx, msg, promise);
        ByteBuf buffer = ctx.alloc().buffer();
        buffer.writeBytes(" append 数据".getBytes(StandardCharsets.UTF_8));
        // 一定要用ctx.writeAndFlush追加数据，下一个处理是链表下一个
        ctx.writeAndFlush(buffer);
        // 如果用channel.writeAndFlush追加数据，下一个处理是链表的tail，那样会造成死循环
        // ctx.channel().writeAndFlush(buffer);
    }

}
